1. Technical Field
This application relates to computer storage devices, and more particularly to communication between computer storage devices.
2. Description of Related Art
Host processor systems may store and retrieve data using a storage device containing a plurality of host interface units (host adapters), disk drives, and disk interface units (disk adapters). Such storage devices are provided, for example, by EMC Corporation of Hopkinton, Mass. and disclosed in U.S. Pat. No. 5,206,939 to Yanai et al., U.S. Pat. No. 5,778,394 to Galtzur et al., U.S. Pat. No. 5,845,147 to Vishlitzky et al., and U.S. Pat. No. 5,857,208 to Ofek. The host systems access the storage device through a plurality of channels provided therewith. Host systems provide data and access control information through the channels to the storage device and the storage device provides data to the host systems also through the channels. The host systems do not address the disk drives of the storage device directly, but rather, access what appears to the host systems as a plurality of logical disk units. The logical disk units may or may not correspond to the actual disk drives. Allowing multiple host systems to access the single storage device unit allows the host systems to share data stored therein.
In some instances, it may be desirable to copy data from one storage device to another. For example, if a host writes data to a first storage device, it may be desirable to copy that data to a second storage device provided in a different location so that if a disaster occurs that renders the first storage device inoperable, the host (or another host) may resume operation using the data of the second storage device. Such a capability is provided, for example, by the Remote Data Facility (RDF) product provided by EMC Corporation of Hopkinton, Mass. With RDF, a first storage device, denoted the xe2x80x9cprimary storage devicexe2x80x9d (or xe2x80x9clocal storage devicexe2x80x9d) is coupled to the host. One or more other storage devices, called xe2x80x9csecondary storage devicesxe2x80x9d (or xe2x80x9cremote storage devicesxe2x80x9d) receive copies of the data that is written to the primary storage device by the host. The host interacts directly with the primary storage device, but any data changes made to the primary storage device are automatically provided to the one or more secondary storage devices using RDF. The primary and secondary storage devices may be connected by a data link, such as an ESCON link. The RDF functionality may be facilitated with an RDF adapter (RA) provided at each of the storage devices.
Data that is sent from the primary storage device to the secondary storage device may first be provided in a cache memory of the primary storage device and marked as xe2x80x9cwrite pendingxe2x80x9d (wp) to indicate that the data is to be sent to the secondary storage device. However, in some instances, it is possible for the data to be marked as wp while the mechanism to send the data to the remote storage device has failed or is delayed. In those cases, the data may never be sent or may be sent too late, even though the data remains in cache marked as write pending. This situation is referred to as a xe2x80x9cstuck wpxe2x80x9d. It would be desirable to address the problem of stuck wp""s.
According to the present invention, transferring data from a local storage device to a remote storage device includes providing a first portion of data to a cache memory of the local storage device, marking the first portion of data as write pending, and, in response to transferring a second portion of data related to the first portion of data prior to the first portion of data being transferred to the remote storage device, transferring the first and second portions of data from the local storage device to the remote storage device. The data may be transferred using RDF format. The first portion of data may be a first block and the second portion of data may be a second block and the first and second blocks may be part of a same sector of data. Transferring the data may also include setting a wpmode flag in response to the first portion of data not being transferred when a request to transfer the second portion of data is made. Transferring the data may also include, in response to the wpmode flag being set, transferring additional data from the local storage device to the remote storage device. The additional data may include data that has also been marked as write pending. The additional data and the first and second portions of data may all be from a same slot. The additional data may include blocks from a sector containing at least one of: the first portion of data and the second portion of data. The additional data may be part of an extant of blocks of a sector containing all blocks of the sector that are marked as write pending. Transferring the data may also include providing a mask indicating which blocks of the extant are write pending. The extant of blocks may include all blocks of the sector. A mask may be provided that indicates which blocks of the extant are write pending. Transferring the data may also include setting a wpmode flag using a system command.
According further to the present invention, computer software that transfers data from a local storage device to a remote storage device, includes executable code that provides a first portion of data to a cache memory of the local storage device, executable code that marks the first portion of data as write pending, and executable code that transfers the first portion of data and a second portion of data, related to the first portion of data, from the local storage device to the remote storage device in response to transferring the second portion of data prior to the first portion of data being transferred to the remote storage device. The data may be transferred using RDF format. The first portion of data may be a first block and the second portion of data may be a second block and the first and second blocks may be part of a same sector of data. The computer software may also include executable code that sets a wpmode flag in response to the first portion of data not being transferred when a request to transfer the second portion of data is made. The computer software may also include executable code that transfers additional data from the local storage device to the remote storage device in response to the wpmode flag being set. The additional data may include data that has also been marked as write pending. The additional data and the first and second portions of data may all be from a same slot. The additional data may include blocks from a sector containing at least one of: the first portion of data and the second portion of data. The additional data may be part of an extant of blocks of a sector containing all blocks of the sector that are marked as write pending. The computer software may also include executable code that provides a mask indicating which blocks of the extant are write pending.
According further to the present invention, an apparatus for transferring data from a local storage device to a remote storage device, includes means for providing a first portion of data to a cache memory of the local storage device, means for marking the first portion of data as write pending, and means for transferring the first portion of data and a second portion of data related to the first portion of data from the local storage device to the remote storage device in response to transferring the second portion of data prior to the first portion of data being transferred to the remote storage device. The data may be transferred using RDF format. The first portion of data may be a first block and the second portion of data may be a second block and the first and second blocks may be part of a same sector of data. The apparatus may also include means for setting a wpmode flag in response to the first portion of data not being transferred when a request to transfer the second portion of data is made. The apparatus may also include means for transferring additional data from the local storage device to the remote storage device in response to the wpmode flag being set. The additional data may include data that has also been marked as write pending. The additional data and the first and second portions of data may all be from a same slot. The additional data may include blocks from a sector containing at least one of: the first portion of data and the second portion of data. The additional data may be part of an extant of blocks of a sector containing all blocks of the sector that are marked as write pending. The apparatus may also include means for providing a mask indicating which blocks of the extant are write pending.